package com.mes.system.service.impl;

import com.mes.common.pojo.MESResult;
import com.mes.pojo.Menu;
import com.mes.system.mapper.MenuMapper;
import com.mes.system.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author 张喆
 * @Company
 * @Description
 * @Time 2024/10/15 15:06
 */
@Service
public class MenuServiceImpl implements MenuService {
    @Autowired
    private MenuMapper menuMapper;
    @Override
    public MESResult queryMenus() {
        List<Menu> menus = queryMenuByParentId(0L);
        // 将mensu打包为QdResult返回
        return MESResult.success(menus);
    }

    /**
     * 递归查询所有的菜单
     * @param parentId
     * @return
     */
    private List<Menu> queryMenuByParentId(Long parentId){
        List<Menu> menus = menuMapper.selectByParentId(parentId);
        if(menus == null || menus.size() == 0){
            return null;// 通过parentId没有查询到子菜单，就结束
        }
        // 判断每一个菜单是否有子菜单
        for (Menu menu: menus){
            if(menu.getMenuParent().equals(new Integer(1))){
                // 说明有子菜单，查询子菜单
                // 递归调用自己查询，将自己的id作为父菜单id传入
                List<Menu> subMenus = queryMenuByParentId(menu.getMenuId());
                // 将子菜单设置到children中
                menu.setChildren(subMenus);
            }
        }
        return menus;
    }
}
